from core import *
from argparse import ArgumentParser
import sys
from pathlib import Path
from color import *

HELP = f"""
头像批量边框添加程序 —— 检测到初次运行

当前文件夹下已创建三个文件夹 backgrounds, template, results
在 backgrounds 里面放置原头像
在 templates 里放边框，确保边框图片名称为 cover.png
运行程序，添加边框后的头像将保存在 results 里

文件夹结构如下：
{GREEN}
|
|
+---backgrounds
|       待处理原头像1.png
|       待处理原头像2.png
|       待处理原头像3.png
|
+---results
|
+---template
|       cover.png
|
{NIL}
软件已开源：{CYAN}https://gitee.com/taylorandtony/avatar-with-border{NIL}
"""


def is_empty_folder() -> bool:
    flag = False
    for folder in ['backgrounds', 'results', 'template']:
        if not (p := Path(folder)).exists():
            flag = True
            p.mkdir()
    if flag:
        print(HELP)

    return flag


def loop():
    if len(sys.argv) == 1:
        if is_empty_folder():
            return
        else:
            default_batch('backgrounds', 'template/cover.png', 'results')
        return

    parser = ArgumentParser(description='头像批量边框添加程序')
    parser.add_argument('-b', '--back',
                        help=f'{GREEN}单文件模式{NIL} :: 待处理原头像图片')

    parser.add_argument('-t', '--temp',
                        help=f'{GREEN}单文件模式{NIL} :: 待添加的模板，必须 png 格式')

    parser.add_argument('-o', '--output',
                        help=f'{GREEN}单文件模式{NIL} :: 处理后的头像保存路径，文件名将自动处理')

    parser.add_argument('-m', '--multi', action='store_true',
                        help=f'{GREEN}单参数 多文件模式{NIL} :: 枚举所有模板并依次加到头像上面，{YELLOW}无需其他参数{NIL}')

    parser.add_argument('-d', '--delete', action='store_true',
                            help=f'{GREEN}单参数{NIL} :: 删除 results 下所有生成的图片')

    args = parser.parse_args()

    # delete image
    if args.delete:
        if input("确定要删除 results 下所有生成的图片吗？(y/n) ") == 'y':
            for p in Path('results').iterdir():
                p.unlink()
        return

    # Use multiple template
    if args.multi:
        multi_template_batch('backgrounds', 'template', 'results')
        return

    # illegal arguments
    if not (args.back and args.temp and args.output):
        print(R('必须指定 -b 和 -t 和 -o 参数才能运行，除非使用`单参数`选项'))
        return

    # single template mode
    # check path
    if not Path(args.back).exists():
        print(f'原头像路径 {R(args.back)} 不存在！')
        return
    if not Path(args.temp).exists():
        print(f'模板路径 {R(args.temp)} 不存在！')
        return
    if not Path(args.output).exists():
        print(f'保存路径文件夹 {R(args.output)} 不存在！')
        return

    # process single template
    file_name = Path(args.back).stem
    save = Path(args.output) / Path(file_name.split('.')[0] + '_processed.png')
    add_one_to_another(args.back, args.temp, str(save))


if __name__ == '__main__':
    loop()
